﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Model;
using System.Linq;
using System.Data;
using DevExpress.Web.ASPxGridView;
using System.Configuration;
using DevExpress.Web.ASPxEditors;
using DevExpress.Data.Filtering;
using Common;


public partial class ViaticosRegistroViajeProgramadoListado : PageBase
{
    DateTemplate dateTemplate = null;

    #region StrComId
    public string StrComId
    {
        get
        {
            if (ViewState["StrComId"] != null)
                return ViewState["StrComId"].ToString();
            return "";
        }
        set { ViewState["StrComId"] = value; }
    }
    #endregion

    #region crearContextItems
    private void crearContextItems()
    {
        try
        {
            Context.Items["StrComId"] = StrComId;
        }
        catch (Exception ex)
        {
            ScriptManager.RegisterStartupScript(Page, Page.GetType(), "msg1_error", "alert('" + ex.Message.ToString() + "');", true);
        }
    }
    #endregion

    #region DataTableViaticosListado
    private DataTable ViaticosListadoTable
    {
        get
        {
            DataTable objTable = null;
            if (Cache["ViaticosListadoTable.aspx" + Session.SessionID] != null)
                objTable = (DataTable)Cache["ViaticosListadoTable.aspx" + Session.SessionID];
            return objTable;
        }
        set
        {
            if (value != null)
            {
                Cache.Insert("ViaticosListadoTable.aspx" + Session.SessionID, value, null, DateTime.Now.AddMinutes(20), TimeSpan.Zero);
            }
        }
    }
    #endregion


    #region DataTableViaticosHistorico
    private DataTable DataTableViaticosHistorico
    {
        get
        {
            DataTable objTable = null;
            if (Cache["DataTableViaticosHistorico.aspx" + Session.SessionID] != null)
                objTable = (DataTable)Cache["DataTableViaticosHistorico.aspx" + Session.SessionID];
            return objTable;
        }
        set
        {
            if (value != null)
            {
                Cache.Insert("DataTableViaticosHistorico.aspx" + Session.SessionID, value, null, DateTime.Now.AddMinutes(20), TimeSpan.Zero);
            }
        }
    }
    #endregion

    #region Page_Load
    protected void Page_Load(object sender, EventArgs e)
    {
        // funcion eliminar con permisos de la pagina

        for (int i = 0; i < Permisos.Count; i++)
        {
            if (Permisos.Contains(Utilidad.Acciones.Eliminar))
            {
                btnEliminar.Visible = true;
            }

            if (Permisos.Contains(Utilidad.Acciones.Adicionar))
            {
                btnNuevo.Visible = true;
            }

            if (Permisos.Contains(Utilidad.Acciones.Actualizar))
            {
                btnActualizar.Visible = true;
            }
            
            
        }


        if (!IsPostBack)
        {
            BindDatos();
        }

        if (ViaticosListadoTable != null)
        {
            ASPxGridViewComisiones.DataSource = ViaticosListadoTable;
            ASPxGridViewComisiones.DataBind();
        }

        if (DataTableViaticosHistorico != null)
        {
            ASPxGridViewHistorico.DataSource = DataTableViaticosHistorico;
            ASPxGridViewHistorico.DataBind();
        }
    }
    #endregion

    #region BindDatos

    private void BindDatos()
    {
        try
        {
            Model.DataClassesViaticosDataContext contexto = new Model.DataClassesViaticosDataContext(ConfigurationManager.AppSettings["Conn"]);

            var datosEpsDisponibles = from a in contexto.PAS_CONSULTAR_COMISIONES()
                                      where a.USU_ID == Usuario.UsuId
                                      select a;

            if (Usuario.PerfilActual == 22 || Usuario.PerfilActual == 121)
            {
                datosEpsDisponibles = from a in contexto.PAS_CONSULTAR_COMISIONES()
                                      select a;

            }
            else
            {
                    datosEpsDisponibles = from a in contexto.PAS_CONSULTAR_COMISIONES()

                                          where a.USU_ID == Usuario.UsuId
                                          select a;
            }

            if (datosEpsDisponibles != null)
            {
                ASPxGridViewComisiones.BeginUpdate();
                ASPxGridViewComisiones.DataSource = datosEpsDisponibles;
                ASPxGridViewComisiones.DataBind();
                ASPxGridViewComisiones.EndUpdate();
                ViaticosListadoTable = GetDataView(ASPxGridViewComisiones);

                //GridViewDataDateColumn column1 = ASPxGridViewComisiones.Columns["COM_FECHA_SALIDA"] as GridViewDataDateColumn;
                //column1.PropertiesDateEdit.DisplayFormatString = "dd.MM.yyyy";

            }
        }
        catch (Exception ex)
        {
            ScriptManager.RegisterStartupScript(Page, Page.GetType(), "msg1_parteB_err44", "alert('" + ex.Message.ToString() + "');", true);
            //lblMensaje.Text = ex.Message.ToString();
        }
    }

    #endregion

    #region GetDataView
    private DataTable GetDataView(ASPxGridView grid)
    {
        DataTable dt = new DataTable();
        foreach (GridViewColumn col in grid.VisibleColumns)
        {
            GridViewDataColumn dataColumn = col as GridViewDataColumn;
            if (dataColumn == null) continue;
            dt.Columns.Add(dataColumn.FieldName);
        }
        for (int i = 0; i < grid.VisibleRowCount; i++)
        {
            DataRow row = dt.Rows.Add();
            foreach (DataColumn col in dt.Columns)
                row[col.ColumnName] = grid.GetRowValues(i, col.ColumnName);
        }
        return dt;
    }
    #endregion

    #region btnActualizar_Click
    protected void btnActualizar_Click(object sender, EventArgs e)
    {
        
        List<object> keyValues = ASPxGridViewComisiones.GetSelectedFieldValues("COM_ID");
        try
        {
            foreach (object key in keyValues)
            {
                if (keyValues.Count == 1)
                {
                    StrComId = key.ToString();
                    crearContextItems();
                    Server.Transfer("ViaticosRegistroViajeProgramado.aspx?SSM_ID=42", true);
                }
                else
                    if (keyValues.Count > 1)
                        msgBox1.alert("Debe Seleccionar un solo Registro para Editar");
            }
            if (keyValues.Count == 0)
                msgBox1.alert("Debe Seleccionar al un Registro para Editar");
        }
        catch (Exception ex)
        {
            ScriptManager.RegisterStartupScript(Page, Page.GetType(), "msg1_error", "alert('" + ex.Message.ToString() + "');", true);
        }
    }
    #endregion

    #region btnNuevo_Click
    protected void btnNuevo_Click(object sender, EventArgs e)
    {
        Server.Transfer("ViaticosRegistroViajeProgramado.aspx?SSM_ID=42", true);
    }
    #endregion

    protected void btnExportar_Click(object sender, EventArgs e)
    {
        gridExport.WriteXlsToResponse();
    }

    protected void ASPxGridViewComisiones_AutoFilterCellEditorInitialize(object sender, ASPxGridViewEditorEventArgs e)
    {
        //if (e.Editor is ASPxDateEdit)
        //    (e.Editor as ASPxDateEdit).EditFormatString = "dd/MM/yyyy";
    }

    protected void ASPxGridViewComisiones_AutoFilterCellEditorCreate(object sender, ASPxGridViewEditorCreateEventArgs e)
    {
    }

    protected void grid_ProcessColumnAutoFilter(object sender, ASPxGridViewAutoFilterEventArgs e)
    {

    }

    protected void grid_Init(object sender, EventArgs e)
    {

    }

    protected void ASPxGridViewComisiones_RowCommand(object sender, ASPxGridViewRowCommandEventArgs e)
    {
        if (e.CommandArgs.CommandName == "cmdHistorico")
        {
            PopupPanelMotivoRechazo.ShowOnPageLoad = true;
            try
            {
                Model.DataClassesViaticosDataContext contexto = new Model.DataClassesViaticosDataContext(ConfigurationManager.AppSettings["Conn"]);
                var datosEpsDisponibles = from a in contexto.COM_COMISION_HISTORICOs
                                          join b in contexto.COM_ESTADOs on a.COE_ID equals b.COE_ID
                                          join c in contexto.ADM_USUARIO2s on a.USU_ID equals c.USU_ID
                                          where a.COM_ID == Convert.ToDecimal((e.KeyValue.ToString()))
                                          select new
                                          {
                                              a.CCH_ID,
                                              a.CCH_FECHA,
                                              a.CCH_OBSERVACIONES,
                                              a.USU_ID,
                                              c.USU_NOMBRE,
                                              b.COE_NOMBRE
                                          };
                if (datosEpsDisponibles != null)
                {
                    ASPxGridViewHistorico.BeginUpdate();
                    ASPxGridViewHistorico.DataSource = datosEpsDisponibles;
                    ASPxGridViewHistorico.DataBind();
                    ASPxGridViewHistorico.EndUpdate();
                    DataTableViaticosHistorico = GetDataView(ASPxGridViewHistorico);
                    //GridViewDataDateColumn column1 = ASPxGridViewComisiones.Columns["COM_FECHA_SALIDA"] as GridViewDataDateColumn;
                    //column1.PropertiesDateEdit.DisplayFormatString = "dd.MM.yyyy";
                }
            }
            catch (Exception ex)
            {
                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "msg1_parteB_err44", "alert('" + ex.Message.ToString() + "');", true);
                //lblMensaje.Text = ex.Message.ToString();
            }



        }
    }

    protected void btnEliminar_Click(object sender, EventArgs e)
    {

        List<object> keyValues = ASPxGridViewComisiones.GetSelectedFieldValues("COM_ID");
        try
        {
            foreach (object key in keyValues)
            {
                if (keyValues.Count != 0)
                {
                    StrComId = key.ToString();

                    Model.DataClassesViaticosDataContext contexto = new Model.DataClassesViaticosDataContext(ConfigurationManager.AppSettings["Conn"]);
                    var datosZona = from u in contexto.COM_COMISION_AGENDAs
                                    where u.COM_ID == Convert.ToDecimal(StrComId)
                                    select u;

                    //borrar los datos de la zona
                    foreach (var vi in datosZona)
                    {
                        contexto.COM_COMISION_AGENDAs.DeleteOnSubmit(vi);
                        contexto.SubmitChanges();
                    }

                    var datosCOM_COMISION_BAS_ZONAS = from u in contexto.COM_COMISION_BAS_ZONAs
                                                      where u.COM_ID == Convert.ToDecimal(StrComId)
                                                      select u;

                    //borrar los datos de la zona
                    foreach (var vi in datosCOM_COMISION_BAS_ZONAS)
                    {
                        contexto.COM_COMISION_BAS_ZONAs.DeleteOnSubmit(vi);
                        contexto.SubmitChanges();
                    }

                    var datosCOM_COMISION_HISTORICO = from u in contexto.COM_COMISION_HISTORICOs
                                                      where u.COM_ID == Convert.ToDecimal(StrComId)
                                                      select u;

                    //borrar los datos de la zona
                    foreach (var vi in datosCOM_COMISION_HISTORICO)
                    {
                        contexto.COM_COMISION_HISTORICOs.DeleteOnSubmit(vi);
                        contexto.SubmitChanges();
                    }

                    var datosCOM_COMISION = from u in contexto.COM_COMISIONs
                                            where u.COM_ID == Convert.ToDecimal(StrComId)
                                            select u;

                    //borrar los datos de la zona
                    foreach (var vi in datosCOM_COMISION)
                    {
                        contexto.COM_COMISIONs.DeleteOnSubmit(vi);
                        contexto.SubmitChanges();
                    }
                    BindDatos();
                    msgBox1.alert("Los registros fueron eliminador exitosamente");
                }
                else
                    if (keyValues.Count > 1)
                        msgBox1.alert("Debe Seleccionar al menos un registro para eliminar");
            }
            if (keyValues.Count == 0)
                msgBox1.alert("Debe Seleccionar al menos un Registro");
        }
        catch (Exception ex)
        {
            ScriptManager.RegisterStartupScript(Page, Page.GetType(), "msg1_error", "alert('" + ex.Message.ToString() + "');", true);
        }

    }
}

